การจำลองกราฟคือกระบวนการแปรรูปความสัมพันธ์ซับซ้อนในโลกแห่งความเป็นจริง (เช่น การกำหนดเส้นทางในอินเทอร์เน็ต หรือการเปลี่ยนสถานะ) ให้กลายเป็นวัตถุทางคณิตศาสตร์ $G = (V, E)$ โดยการกำหนดวัตถุเป็นจุดยอด (Vertex) และกำหนดความสัมพันธ์เป็นเส้นเชื่อม (Edge)ด้วยวิธีนี้ เราสามารถใช้แบบจำลองข้อมูลเชิงนามธรรม (ADT) และอัลกอริธึมมาตรฐานเพื่อแก้ปัญหาที่หลากหลายได้
การกำหนดองค์ประกอบหลัก
- จุดยอด (Vertex): หรือเรียกอีกอย่างว่า โหนด มี "คีย์" (Key) เป็นรหัสประจำตัวที่ไม่ซ้ำกัน และสามารถบรรจุ "ข้อมูลนำส่ง" (Payload) ได้
- เส้นเชื่อม (Edge): เชื่อมระหว่างจุดยอดสองจุด แสดงถึงความสัมพันธ์ระหว่างกัน อาจเป็นแบบทิศทางเดียว (กราฟมีทิศทาง) หรือสองทิศทางก็ได้
- น้ำหนัก (Weight): ค่าตัวเลขบนเส้นเชื่อม แทนต้นทุน (เช่น ระยะทาง ความล่าช้า หรือแบนด์วิดธ์)
ความแม่นยำทางคณิตศาสตร์
ทางคณิตศาสตร์แล้ว $G = (V, E)$ โดยที่ $V$ คือเซตของจุดยอด และ $E$ คือเซตของคู่อันดับ $(v, w)$ ที่เป็นเส้นเชื่อม โดยที่ $v, w \in V$ โครงสร้างเชิงนามธรรมที่เข้มงวดนี้ทำให้เราสามารถใช้อัลกอริธึม BFS/DFS ชุดเดียวกันเพื่อแก้ปัญหาตั้งแต่การนำทางแผนที่ ไปจนถึงการแนะนำเครือข่ายสังคมได้ทั้งหมด
ข้อคิดในการจำลอง: กราฟพื้นที่สถานะ
เมื่อแก้ปัญหาปริศนาเชิงตรรกะ (เช่น ปัญหาเหยือกน้ำ) ทุกสถานะที่ถูกต้องตามกฎจะกลายเป็นจุดยอด และทุกครั้งที่การกระทำที่ถูกต้องตามกฎจะกลายเป็นเส้นเชื่อม กระบวนการแก้ปัญหาก็คือการค้นหาระยะทางจากจุดยอดเริ่มต้นไปยังจุดยอดเป้าหมาย